package com.frejoys.service;


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.frejoys.common.dto.agent.AgentRoleGroupPageDto;
import com.frejoys.common.dto.agent.AgentRoleGroupSaveDto;
import com.frejoys.common.dto.agent.AgentRoleGroupUpdateDto;
import com.frejoys.common.dto.common.IdDto;
import com.frejoys.common.vo.agent.AgentRoleGroupVo;
import com.frejoys.common.vo.agent.AgentUserInfoVo;
import com.frejoys.dao.entity.AgentRoleGroup;

import java.util.List;

public interface AgentRoleGroupService extends IService<AgentRoleGroup> {

    default AgentRoleGroup getOnly(QueryWrapper<AgentRoleGroup> wrapper) {
        wrapper.last("limit 1");
        return this.getOne(wrapper);
    }

    default AgentRoleGroup getOnly(LambdaQueryWrapper<AgentRoleGroup> wrapper) {
        wrapper.last("limit 1");
        return this.getOne(wrapper);
    }

    // 获取分成组基本信息
    AgentRoleGroup getRebateListById(Integer id);

    // 获取分成组基本信息
    List<AgentRoleGroup> getRebateListById(List<Integer> id);

    // 获取顶级组信息
    AgentRoleGroup getTopInfo(List<AgentRoleGroup> list);

    /**
     * 后台设置代理角色组
     */
    boolean saveAgentRoleGroup(AgentRoleGroupSaveDto dto);

    /**
     * 后台修改代理角色组名称和管理
     */
    boolean updateAgentGroup(AgentRoleGroupUpdateDto dto);

    /**
     * 后台查询代理角色
     */
    IPage<AgentRoleGroupVo> searchAgentRoleGroupList(AgentRoleGroupPageDto dto);

    /**
     * 用户查询自己管理的角色组信息
     */
    //查询自己管理的代理角色组
//    List<AgentRoleGroupVo> listAgentRoleGroupByUserId(Long userId);

    /**
     * 查询自己推广的用户
     * @param userId 登录人id
     */
    List<AgentUserInfoVo> listAgentUserById(Long userId);

    //删除代理角色组
    boolean deleteAgentRoleGroup(IdDto dto);
}
